#pragma once

#include "Widgets/Widget.h"
#include "DockWidgetTitleBarBase.m.h"

//base class of title bar of docked widget
RCLASS()
class WHENGINE_API RDockWidgetTitleBarBase : public RWidget
{
    ROBJECT

public:
    virtual void SetDockWidget(TSharedObjectPtr<RWidget> InDockWidget)
    {
        assert(false && "implement in subclass");
    }


    virtual void SetTitle(const CString & InTitle)
    { 
        assert(false && "implement in subclass"); 
    };
    virtual CString GetTitle() const
    { 
        assert(false && "implement in subclass");
        return U""; 
    }

    virtual void Highlight() 
    {
        assert(false && "implement in subclass");
    }
    virtual void Unhighlight() 
    {
        assert(false && "implement in subclass");
    }
    virtual bool IsHighlighted() const 
    { 
        assert(false && "implement in subclass");
        return false;
    }

    virtual TDelegate<void,RDockWidgetTitleBarBasePtr>& OnCloseButtonClicked() 
    {
        assert(false && "implement in subclass");
        static TDelegate<void,RDockWidgetTitleBarBasePtr> EmptyDelegate;
        return EmptyDelegate;
    }
protected:
};